**Состояние перевода:** На этой странице представлен перевод статьи [Extra keyboard keys](/index.php/Extra_keyboard_keys "Extra keyboard keys"). Дата последней синхронизации: 2015-06-29\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Extra_keyboard_keys&diff=0&oldid=379429).

На многих клавиатурах есть *специальные клавиши* (их иногда называют *горячими клавишами* или *мультимедиа клавишами*), которые сделаны для того, чтобы запускать приложения или печатать специальные символы (которые не назначены на стандартной национальной раскладке). [udev (Русский)](/index.php/Udev_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Udev (Русский)") содержит в себу большую базу данных назначений клавиш, соответствующих конкретным клавиатурам, поэтому чаще всего клавиатуры работают из коробки. Если у вас очень новая или очень редкая клавиатура, вам может понадобиться настроить раскладку самостоятельно.

Также вы можете изменить раскладку клавиатуры для того, чтобы система воспринимала клавиши как-то иначе, чем сейчас. Существует три уровня идентификации клавиши:

*   [Скан код (scancode)](https://en.wikipedia.org/wiki/ru:%D0%A1%D0%BA%D0%B0%D0%BD-%D0%BA%D0%BE%D0%B4 "wikipedia:ru:Скан-код") - это низший уровень идентификации клавиши. Представляет из себя число, которое клавиатура посылает компьютеру.
*   **Код клавиши (keycode)** - это следующий уровень идентификации клавиши. Кейкод соответствует какой-то функции.
*   **Символ клавиши (keysym)** - это третий уровень идентификации клавиши. Он отвечает за *символ*. Он может зависеть от того, нажата ли клавиша Shift или была ли одновременно нажата какая-то другая [клавиша-модификатор](https://en.wikipedia.org/wiki/Modifier_key "wikipedia:Modifier key").

*Скан кодам* назначены *коды клавиш*, которым в свою очередь назначены *символы клавиш*, в зависимости от раскладки клавиатуры. Большинству ваших кнопок уже должны быть назначены *коды клавиш*, или, по крайней мере, *скан коды*. Клавиши без *скан кодов* не распознаны ядром; обычно это бывают дополнительные на 'игровых' клавиатурах.

В Xorg некоторым *символам клавиш* (например `XF86AudioPlay`, `XF86AudioRaiseVolume`) можно назначить действия (такие как запуск внешних приложений). Смотрите [Extra keyboard keys in Xorg (Русский)#Присваивание кодов клавиш символам](/index.php/Extra_keyboard_keys_in_Xorg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.9F.D1.80.D0.B8.D1.81.D0.B2.D0.B0.D0.B8.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0.D0.BC "Extra keyboard keys in Xorg (Русский)") для дополнительной информации.

В консольном режиме некоторым *символам клавиш* (например от `F1` до `F246`) могут быть назначены определённые действия (такие как переключение на другую консоль или печать последовательности символов). Смотрите [Extra keyboard keys in console](/index.php/Extra_keyboard_keys_in_console "Extra keyboard keys in console") для дополнительной информации.

## Contents

*   [1 Идентификация кодов клавиш](#.D0.98.D0.B4.D0.B5.D0.BD.D1.82.D0.B8.D1.84.D0.B8.D0.BA.D0.B0.D1.86.D0.B8.D1.8F_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88)
    *   [1.1 Скан коды](#.D0.A1.D0.BA.D0.B0.D0.BD_.D0.BA.D0.BE.D0.B4.D1.8B)
        *   [1.1.1 С помощью showkey](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_showkey)
        *   [1.1.2 С помощью evtest](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_evtest)
        *   [1.1.3 С помощью dmesg](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_dmesg)
    *   [1.2 Коды клавиш](#.D0.9A.D0.BE.D0.B4.D1.8B_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88)
        *   [1.2.1 Режим консоли](#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.D0.BA.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D0.B8)
        *   [1.2.2 Режим графики](#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.D0.B3.D1.80.D0.B0.D1.84.D0.B8.D0.BA.D0.B8)
*   [2 Назначение скан кодов кодам клавиш](#.D0.9D.D0.B0.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81.D0.BA.D0.B0.D0.BD_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BE.D0.B4.D0.B0.D0.BC_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88)
*   [3 Назначение кодов клавиш символам клавиш](#.D0.9D.D0.B0.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BA.D0.BE.D0.B4.D0.BE.D0.B2_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88_.D1.81.D0.B8.D0.BC.D0.B2.D0.BE.D0.BB.D0.B0.D0.BC_.D0.BA.D0.BB.D0.B0.D0.B2.D0.B8.D1.88)
    *   [3.1 В консольном режиме](#.D0.92_.D0.BA.D0.BE.D0.BD.D1.81.D0.BE.D0.BB.D1.8C.D0.BD.D0.BE.D0.BC_.D1.80.D0.B5.D0.B6.D0.B8.D0.BC.D0.B5)
    *   [3.2 В графическом режиме](#.D0.92_.D0.B3.D1.80.D0.B0.D1.84.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.BC_.D1.80.D0.B5.D0.B6.D0.B8.D0.BC.D0.B5)
*   [4 Ноутбуки](#.D0.9D.D0.BE.D1.83.D1.82.D0.B1.D1.83.D0.BA.D0.B8)
    *   [4.1 Asus M series](#Asus_M_series)
    *   [4.2 Asus N56VJ (возможно подойдёт и для других)](#Asus_N56VJ_.28.D0.B2.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE_.D0.BF.D0.BE.D0.B4.D0.BE.D0.B9.D0.B4.D1.91.D1.82_.D0.B8_.D0.B4.D0.BB.D1.8F_.D0.B4.D1.80.D1.83.D0.B3.D0.B8.D1.85.29)
*   [5 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5)

## Идентификация кодов клавиш

### Скан коды

#### С помощью showkey

Традиционный способ узнать *скан код* - воспользоваться утилитой *showkey*. *showkey* ожидает нажатия клавиши, или выходит, если не было нажатий в течение 10 секунд. Чтобы работать с *showkey*, вы должны быть в [виртуальной консоли](https://en.wikipedia.org/wiki/ru:%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C "wikipedia:ru:Виртуальная консоль"), а не в графическом окружении или работать, залогинившись по сети. Выполните следующую команду:

```
# showkey --scancodes

```

и понажимайте клавиши на клавиатуре; вы должны увидеть *скан коды* на экране.

#### С помощью evtest

Для USB клавиатур, видимо, нужно использовать *evtest* из пакета [evtest](https://www.archlinux.org/packages/?name=evtest) вместо *showkey*:[[1]](https://ask.fedoraproject.org/en/question/46201/how-to-map-scancodes-to-keycodes/)

```
# evtest /dev/input/event12
...
Event: time 1434666536.001123, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70053
Event: time 1434666536.001123, type 1 (EV_KEY), code 69 (KEY_NUMLOCK), value 0
Event: time 1434666536.001123, -------------- EV_SYN ------------

```

Используйте поле "value" из `MSC_SCAN`. В этом примере показано, что NumLock имеет сканкод 70053 и keycode 69.

#### С помощью dmesg

**Примечание:** Этот метод не показывает *скан коды* всех клавиш, он показывает их только для неизвестных клавиш.

Вы можете узнать *скан код* клавиши, нажав её и посмотрев вывод команды `dmesg`. Например, если у вас отображается такая строка:

```
Unknown key pressed (translated set 2, code 0xa0 on isa0060/serio0

```

значит, *скан код* нужной вам клавиши - `0xa0`.

### Коды клавиш

**Важно:** Обратите внимание, что *коды клавиш* различаются в консольном и графическом режимах. Используйте соответствующую утилиту, чтобы узнать нужное значение.

#### Режим консоли

В [виртуальной консоли](https://en.wikipedia.org/wiki/ru:%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C "wikipedia:ru:Виртуальная консоль") *коды клавиш* можно узнать утилитой *showkey*. *showkey* ждёт нажатия клавиш, и если нажатий нет в течение 10 секунд, выходит (это единственный способ выйти из программы) Чтобы работать с *showkey*, вы должны быть в виртуальной консоли, а не в графическом окружении. Выполните следующую команду:

```
# showkey --keycodes

```

и понажимайте клавиши на клавиатуре. Вы должны увидеть *коды клавиш* на экране.

#### Режим графики

В графическом режиме *коды клавищ*, используемые [Xorg (Русский)](/index.php/Xorg_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Xorg (Русский)"), можно узнать с помощью утилиты *xev*, которая поставляется в пакете [xorg-xev](https://www.archlinux.org/packages/?name=xorg-xev). Разумеется, чтобы работать с *xev*, вы должны находиться в графическом окружении, а не в консоли.

Выполнив следующую команду, вы запустите *xev* с выводом только релевантной информации:

```
$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

```

Вот пример вывода:

```
38 a
27 r
54 c
43 h
153 NoSymbol
144 NoSymbol

```

В этом примере были нажаты клавиши `a`, `r`, `c`, `h` и две мультимедиа клавиши. Первым четырём клавишам с *кодами клавиш* `38`, `27`, `54` и `43` правильно назначены символы, а мультимедиа клавишам с *кодами клавиш* `153` и `144` - нет. Надпись `NoSymbol` означает, что этим клавишам не назначен *символ клавиши*.

Если вы нажимаете клавишу и ничего не появляется на терминале, это может означать, что либо у клавиши нет *скан кода*, либо *сканкоду* не назначен *код клавиши*, либо какой-то другой процесс отлавливает нажатия клавиш. Если вы подозреваете, что процесс, слушающий X сервер отлавливает нажатия клавиш, вы можете попробовать запустить xev из чистой X сессии:

```
$ xinit /usr/bin/xterm -- :1

```

## Назначение скан кодов кодам клавиш

Смотрите основную статью: [Map scancodes to keycodes](/index.php/Map_scancodes_to_keycodes "Map scancodes to keycodes").

## Назначение кодов клавиш символам клавиш

### В консольном режиме

Смотрите основную статью: [Extra keyboard keys in console](/index.php/Extra_keyboard_keys_in_console "Extra keyboard keys in console").

### В графическом режиме

Смотрите основную статью: [xmodmap (Русский)](/index.php/Xmodmap_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Xmodmap (Русский)").

## Ноутбуки

### Asus M series

Чтобы контролировать индикатор освещения и мультимедиа клавиши на вашем ноутбуке Asus, вы должны использовать следующую команду:

```
# echo 1 > /sys/devices/platform/asus_laptop/ls_switch

```

Чтобы она выполнялась всегда при запуске, создайте [Systemd tmpfile](/index.php/Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.92.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.BD.D1.8B.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D1.8B "Systemd (Русский)"):

 `/etc/tmpfiles.d/local.conf` 
```
w /sys/devices/platform/asus_laptop/ls_switch - - - - 1

```

**Примечание:** Возможно, этот способ подойдёт и для других моделей ноутбуков Asus.

### Asus N56VJ (возможно подойдёт и для других)

Если большинство специальных клавиш не работает, попробуйте погрузить модуль ядра asus-nb-wmi, с помощью команды:

```
# modprobe asus-nb-wmi

```

затем проверьте, заработали ли они с помощью xev. Если вы совмещаете этот способ с опцией загрузки acpi_osi="!Windows 2012", вы можете получить странные результаты в xev, поэтому постарайтесь не использовать её. Если это помоглоЮ сделайте модуль загружаемым автоматически, как описано в статье [Модули ядра](/index.php/Kernel_modules_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Kernel modules (Русский)")

## Смотрите также

*   [Enabling Keyboard Multimedia Keys](http://wiki.linuxquestions.org/wiki/Configuring_keyboards#Enabling_Keyboard_Multimedia_Keys) - guide on LinuxQuestions wiki
*   [Multimedia Keys](http://www.gentoo-wiki.info/HOWTO_Use_Multimedia_Keys) on [Gentoo Wiki Archives](http://www.gentoo-wiki.info/)